/* GL Camera
 *
 * Thanks go out to Alexander Festini for his OpenGL
 * Camera implementation.
 */

#ifndef CAMERA_H
#define CAMERA_H

#include <GL/glut.h>
#include <GL/gl.h>
#include <GL/glu.h>

class Camera
{
private:
	GLfloat m_Transform[16];

public:
	GLfloat const *g_Right, *g_Up, *g_Forward;
	GLfloat *g_Position;

	Camera( const GLfloat x, const GLfloat y, const GLfloat z );
	virtual ~Camera( void );

	void SetView( void );
	void MoveLoc( GLfloat p_X, GLfloat p_Y, GLfloat p_Z, GLfloat p_Distance = 1 );
	void MoveGlob( GLfloat p_X, GLfloat p_Y, GLfloat p_Z, GLfloat p_Distance = 1 );
	void RotateLoc( GLfloat p_Degrees, GLfloat p_X, GLfloat p_Y, GLfloat p_Z );
	void RotateGlob( GLfloat p_Degrees, GLfloat p_X, GLfloat p_Y, GLfloat p_Z );
};

#endif
